<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>利用构造函数创建对象</title>
</head>

<body>
    <pre>

    ★★★★★

    一、构造函数
      构造函数是一种特殊的函数，主要用来初始化对象，即为对象成员变量赋初始值
      可以把对象中一些公共的属性和方法抽取出来，然后封装到这个函数里面

      注意事项：
        构造函数用于创建某一类对象，其首字母要大写
        构造函数要和 new 一起使用才有意义

    二、创建对象的三种方式
      1. 利用 new Object() 的方式
      2. 利用对象字面量的方式 {}
      3. 利用构造函数创建对象

    三、new 在执行时会做四件事情
      1. 在内存中创建一个新的空对象。
      2. 让 this 指向这个新的对象。
      3. 执行构造函数里面的代码，给这个新对象添加属性和方法。
      4. 返回这个新对象(所以构造函数里面不需要 return)
      
  </pre
    >

    <script>
      // 1.
      // function Person(name, age) {
      //   this.name = name;
      //   this.age = age;
      // }
      // const p = new Person("zs", 20);
      // console.log(p.name, p.age); // zs 20

      // 2.
      function Person(name, age) {
        this.name = name;
        this.age = age;
        this.say = function () {
          console.log("我是程序员");
        };
      }
      var p2 = new Person("ls", 30);
      console.log(p2); // Person {name: "ls", age: 30, say: ƒ}
      console.log(p2.say()); // 我是程序员
    </script>
  </body>
</html>